@@ -191,6 +191,8 @@ module Agents |
||
| 191 | 191 |
end |
| 192 | 192 |
|
| 193 | 193 |
def latest_events(reload = false) |
| 194 |
+ received_events = received_events().reorder(id: :asc) |
|
| 195 |
+ |
|
| 194 | 196 |
events = |
| 195 | 197 |
if (event_ids = memory[:event_ids]) && |
| 196 | 198 |
memory[:events_order] == events_order && |
@@ -208,8 +210,7 @@ module Agents |
||
| 208 | 210 |
|
| 209 | 211 |
new_events = |
| 210 | 212 |
if last_event_id = memory[:last_event_id] |
| 211 |
- received_events.where(Event.arel_table[:id].gt(last_event_id)). |
|
| 212 |
- order(id: :asc).to_a |
|
| 213 |
+ received_events.where(Event.arel_table[:id].gt(last_event_id)).to_a |
|
| 213 | 214 |
else |
| 214 | 215 |
source_ids.flat_map { |source_id|
|
| 215 | 216 |
# dig twice as many events as the number of |
@@ -242,13 +242,53 @@ describe Agents::DataOutputAgent do |
||
| 242 | 242 |
}) |
| 243 | 243 |
end |
| 244 | 244 |
|
| 245 |
+ context 'with more events' do |
|
| 246 |
+ let!(:event4) do |
|
| 247 |
+ agents(:bob_website_agent).create_event payload: {
|
|
| 248 |
+ 'site_title' => 'XKCD', |
|
| 249 |
+ 'url' => 'http://imgs.xkcd.com/comics/comic1.png', |
|
| 250 |
+ 'title' => 'Comic 1', |
|
| 251 |
+ 'date' => '', |
|
| 252 |
+ 'hovertext' => 'Hovertext for Comic 1' |
|
| 253 |
+ } |
|
| 254 |
+ end |
|
| 255 |
+ |
|
| 256 |
+ let!(:event5) do |
|
| 257 |
+ agents(:bob_website_agent).create_event payload: {
|
|
| 258 |
+ 'site_title' => 'XKCD', |
|
| 259 |
+ 'url' => 'http://imgs.xkcd.com/comics/comic2.png', |
|
| 260 |
+ 'title' => 'Comic 2', |
|
| 261 |
+ 'date' => '', |
|
| 262 |
+ 'hovertext' => 'Hovertext for Comic 2' |
|
| 263 |
+ } |
|
| 264 |
+ end |
|
| 265 |
+ |
|
| 266 |
+ let!(:event6) do |
|
| 267 |
+ agents(:bob_website_agent).create_event payload: {
|
|
| 268 |
+ 'site_title' => 'XKCD', |
|
| 269 |
+ 'url' => 'http://imgs.xkcd.com/comics/comic3.png', |
|
| 270 |
+ 'title' => 'Comic 3', |
|
| 271 |
+ 'date' => '', |
|
| 272 |
+ 'hovertext' => 'Hovertext for Comic 3' |
|
| 273 |
+ } |
|
| 274 |
+ end |
|
| 275 |
+ |
|
| 276 |
+ describe 'limiting' do |
|
| 277 |
+ it 'can select the last `events_to_show` events' do |
|
| 278 |
+ agent.options['events_to_show'] = 2 |
|
| 279 |
+ content, _status, _content_type = agent.receive_web_request({ 'secret' => 'secret2' }, 'get', 'application/json')
|
|
| 280 |
+ expect(content['items'].map {|i| i["title"] }).to eq(["Comic 3", "Comic 2"])
|
|
| 281 |
+ end |
|
| 282 |
+ end |
|
| 283 |
+ end |
|
| 284 |
+ |
|
| 245 | 285 |
describe 'ordering' do |
| 246 | 286 |
before do |
| 247 | 287 |
agent.options['events_order'] = ['{{hovertext}}']
|
| 248 | 288 |
agent.options['events_list_order'] = ['{{title}}']
|
| 249 | 289 |
end |
| 250 | 290 |
|
| 251 |
- it 'can reorder the events_to_show last events based on a Liquid expression' do |
|
| 291 |
+ it 'can reorder the last `events_to_show` events based on a Liquid expression' do |
|
| 252 | 292 |
agent.options['events_to_show'] = 2 |
| 253 | 293 |
asc_content, _status, _content_type = agent.receive_web_request({ 'secret' => 'secret2' }, 'get', 'application/json')
|
| 254 | 294 |
expect(asc_content['items'].map {|i| i["title"] }).to eq(["Evolving", "Evolving again"])
|